package com.example.house.vm

import com.alibaba.android.arouter.utils.TextUtils
import net.sourceforge.pinyin4j.PinyinHelper
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination
import java.util.Locale

object PinyinUtils {
    fun getPinyin(str:String):String{
        //创建拼音输出格式
        val format = HanyuPinyinOutputFormat()
        //大写字母输出
        format.caseType= HanyuPinyinCaseType.UPPERCASE
        //不带声调
        format.toneType=HanyuPinyinToneType.WITHOUT_TONE

        val sb =StringBuilder()
        val charArray=str.toCharArray()
        for(i in charArray.indices){
            val c=charArray[i]
            if(Character.isWhitespace(c)){
                continue
            }
            if (c.code>=-127 && c.code<128){
                sb.append(c)
            }else{
                var s=""
                try{
                    s=PinyinHelper.toHanyuPinyinStringArray(c,format).get(0)
                    sb.append(s)
                }catch (e:BadHanyuPinyinOutputFormatCombination){
                    e.printStackTrace()
                    sb.append(s)
                }
            }
        }
        return sb.toString()
    }

    /**
     * 1.如果输入拼音为空，返回 #
     * 2.取拼音字符串的第一个字符
     * 3.如果是字母，返回其大写形式
     * 4.否则返回 #（用于非字母开头的分组）
     */
    fun getFirstLetter(pinyin:String):String{
        if (TextUtils.isEmpty(pinyin)){
            return  "#"
        }
        val firstChar=pinyin[0]
        return  if (Character.isLetter(firstChar)){
            firstChar.toString().uppercase(Locale.getDefault())
        }else{
            "#"
        }
    }
}